package com.leetcode.offer.chapter5;

/**
 * @author Dennis Li
 * @date 2020/7/16 21:27
 */
public class MaxValue_47 {

    public int maxValue(int[][] grid) {
        // 通过初始化首行，有效的节省了事时间，省去了判断的操作
        int m = grid.length, n = grid[0].length;
        for(int j = 1; j < n; j++) // 初始化第一行
            grid[0][j] += grid[0][j - 1];
        for(int i = 1; i < m; i++) // 初始化第一列
            grid[i][0] += grid[i - 1][0];
        for(int i = 1; i < m; i++)
            for(int j = 1; j < n; j++)
                grid[i][j] += Math.max(grid[i][j - 1], grid[i - 1][j]);
        return grid[m - 1][n - 1];
    }
}
